import axios from "axios";
import { ElMessage } from "element-plus";

// 创建 axios 实例
let request = axios.create({
    baseURL: import.meta.env.VITE_APP_BASE_API, // 基础路径
    // timeout: 5000, // 可选：超时时间
});


// 请求拦截器
request.interceptors.request.use((config) => {
    const token = localStorage.getItem('token');

    // 确保 config.url 存在且不是登录或发送验证码的请求
    if (token && config.url && !['/users/login', '/users/sendMsg'].includes(config.url)) {
        config.headers['token'] = token;
    }

    return config;
}, (error) => {
    return Promise.reject(error);
});



// 响应拦截器
request.interceptors.response.use(
    (response) => {
        // 成功回调
        return response.data;
    },
    (error) => {
        // 失败回调：处理 http 网络错误
        let message = '';

        // 防止 error.response 为空，增加额外检查
        if (error.response) {
            const status = error.response.status;
            switch (status) {
                case 401:
                    message = "TOKEN过期";
                    break;
                case 403:
                    message = "无权访问";
                    break;
                case 404:
                    message = '请求地址错误';
                    break;
                case 500:
                    message = "服务器出现问题";
                    break;
                default:
                    message = "网络出现问题";
                    break;
            }
        } else {
            message = "网络请求失败，请检查网络连接";
        }

        // 提示错误信息
        ElMessage({
            type: 'error',
            message,
        });

        return Promise.reject(error);
    }
);

export default request;
